package com.ccc.influxdb.pojo;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 查询参数
 *
 * @author superC
 * @version 2.0.0
 * @date 2023/2/23
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Builder
public class QueryParam implements Serializable {
    private static final long serialVersionUID = 1577020216590412852L;

    /**
     * 组织，若为空则获取默认组织（yml中配置的org）
     */
    private String org;

    /**
     * 桶（数据库），若为空则获取默认桶（yml中配置的bucket）
     */
    private String bucket;

    /**
     * 表，非空必填
     */
    private String measurement;

    /**
     * TAG查询条件，可为null
     */
    private TagParam tags;

    /**
     * FIELD查询条件，可为空
     */
    private String field;

    /**
     * 开始时间，若为空默认赋值DEFAULT_START_TIME
     */
    private String startTime;

    /**
     * 结束时间，可为空
     */
    private String stopTime;

    /**
     * 排序参数，可为null
     */
    private SortParam sortParam;

    /**
     * 是否获取top数据
     */
    private boolean getTopData = false;

    private Integer topNum;

    /**
     * 是否获取bottom数据
     */
    private boolean getBottomData = false;

    private Integer bottomNum;

    /**
     * 是否获取最一新条数据
     */
    private boolean getLastData = false;

    /**
     * 是否使用pivot函数（将多行转列）
     */
    private boolean pivot = false;

}